package main

import "fmt"

/*
（4）方法的访问范围控制的规则，和函数一样。方法名首字母小写，只能在本包访问，方法首字母大写，可以在本包和其它包访问。
（5）如果一个类型实现了String()这个方法，那么fmt.Println默认会调用这个变量的String()进行输出
以后定义结构体的话，常定义String()作为输出结构体信息的方法，在fmt.Println会自动调用
*/
type Student2 struct {
	Name string
	Age  int
}

//String()作为输出结构体信息的方法，在fmt.Println会自动调用
//类似java的toString()
func (s *Student2) String() string {
	str := fmt.Sprintf("UDF String(): Name = %v , Age = %v", s.Name, s.Age)
	return str
}
func main() {
	stu := Student2{
		Name: "丽丽",
		Age:  20,
	}
	//传入地址，如果绑定了String方法就会自动调用
	fmt.Println(&stu)
}
